package com.open.shitou.presenter;

import com.open.shitou.bean.Goods;
import com.open.shitou.bean.MyUser;
import com.orhanobut.logger.Logger;

import java.util.ArrayList;
import java.util.List;

import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.SaveListener;
import cn.bmob.v3.listener.UpdateListener;

/**
 * 石头商品的操作，查询，添加，删除.
 */

public class GoodsPresenter {

    public static final int YU_SHI_TYPE = 0; // 0 玉石
    public static final int QI_SHI_TYPE = 1; // 1 奇石
    public static final int JING_GUAN_SHI_TYPE = 2; // 2 景观石
    public static final int YU_SHI_CHENG_PING_TYPE = 3; // 3 玉石成品

    /**
     * 获取某个用户的所有发布的商品
     */
    public void getUserAllGoods(final MyUser user) {
        Logger.d(user.toString());
        BmobQuery<Goods> query = new BmobQuery<Goods>();
        query.addWhereEqualTo("author", user);
        query.order("-updatedAt");
        query.include("author");
        query.findObjects(new FindListener<Goods>() {
            @Override
            public void done(List<Goods> list, BmobException e) {
                if (null == e) { // 获取成功
                    Logger.d(list);
                } else { // 获取失败
                    Logger.d(e);
                }
            }
        });
    }

    /**
     * 获取某个 用户的 and 类型的 石头商品.
     *
     * @param user 某个用户
     * @param type 类型(0 玉石，1 奇石，2 景观石，3 玉石成品)
     */
    public void getUserTypeGoods(final MyUser user, final int type) {
        // 条件一,为用户自己.
        BmobQuery<Goods> eq1 = new BmobQuery<Goods>();
        eq1.addWhereEqualTo("author", user);
        // 条件二，商品类型.
        BmobQuery<Goods> eq2 = new BmobQuery<Goods>();
        eq2.addWhereEqualTo("type", type);
        List<BmobQuery<Goods>> andQuerys = new ArrayList<BmobQuery<Goods>>();
        andQuerys.add(eq1);
        andQuerys.add(eq2);
        // 查询
        BmobQuery<Goods> query = new BmobQuery<Goods>();
        query.and(andQuerys);
        query.findObjects(new FindListener<Goods>() {
            @Override
            public void done(List<Goods> list, BmobException e) {
                if (null == e) {
                    Logger.d(list);
                } else {
                    Logger.d(e);
                }
            }
        });
    }

    /**
     * 用户发布自己的石头商品
     */
    public void pushGoods(final Goods goods) {
        MyUser user = BmobUser.getCurrentUser(MyUser.class);
        if (null != user) {
            goods.setAuthor(user);
            goods.save(new SaveListener<String>() {
                @Override
                public void done(String s, BmobException e) {
                    if (null == e) {
                        Logger.d(s);
                    } else {
                        Logger.d(e);
                    }
                }
            });
        } else {
            Logger.d("发布石头失败，未登陆");
        }
    }

    /**
     * 删除石头商品.
     *
     * @param goods
     */
    public void deleteGoods(final Goods goods) {
        goods.delete(new UpdateListener() {
            @Override
            public void done(BmobException e) {
                if (null == e) {
                    Logger.d(goods.getObjectId() + "删除成功");
                } else { // 删除失败
                    Logger.d(e);
                }
            }
        });
    }

}
